/*!
 * 文件名称： main.c
 * 描    述： UART-printf打印实验主函数文件
 * 版本：     2023-12-03, V1.0
*/

/*
* GD32F303东方红开发板V1.0
* 淘宝商城：   https://juwo.taobao.com
* 技术交流：   https://www.gd32bbs.com/ask/
* 视频学习：   https://space.bilibili.com/475462605
* 微信公众号： gd32bbs
* Copyright    苏州聚沃电子科技有限公司
* 版权所有，盗版必究。
*/

#include "gd32f30x.h"
#include <stdio.h>
#include "bsp_uart.h"
#include "bsp_led.h"
#include "driver_public.h"

/*!
* 说明     main函数
* 输入     无
* 输出     无
* 返回值   无
*/

uint8_t uart_poll_buff[50],uart_dma_buff[50],uart_int_buff[50];
int main(void)
{
    //延时和公共驱动部分初始化    
    driver_init(); 

    //串口初始化,DMA模式开启   
    BOARD_UART.uart_mode_tx=MODE_DMA;    
    bsp_uart_init(&BOARD_UART);
    
    bsp_led_init(&LED0);  

    //打开对应串口的中断
    nvic_irq_enable(USART0_IRQn,2,0);    
    
	while(1)
	{
        //printg标准打印（轮训）
        printf_log("\r\ndelay 1s \r\n");     
        delay_ms(1000);
        bsp_led_toggle(&LED0);        
        printf_log("printf:system driver_tick is %lld \r\n",driver_tick);
        
        //轮训方式打印
        memset(uart_poll_buff,0,50);//清零buff       
        sprintf((char*)uart_poll_buff,"poll transmit:system driver_tick is %lld \r\n",driver_tick);//格式化字符串        
        driver_uart_poll_transmit(&BOARD_UART,uart_poll_buff,strlen((const char*)uart_poll_buff));
        bsp_lcd_printf("%s",uart_poll_buff);            

        
        //中断方式打印
        memset(uart_int_buff,0,50);         
        sprintf((char*)uart_int_buff,"int transmit:system driver_tick is %lld \r\n",driver_tick);
        driver_uart_int_transmit(&BOARD_UART,uart_int_buff,strlen((const char*)uart_int_buff));
        bsp_lcd_printf("%s",uart_poll_buff);            
        
        
        //DMA方式打印
        memset(uart_dma_buff,0,50);        
        sprintf((char*)uart_dma_buff,"dma transmit:system driver_tick is %lld \r\n",driver_tick);        
        driver_uart_dma_transmit(&BOARD_UART,uart_dma_buff,strlen((const char*)uart_dma_buff));
        bsp_lcd_printf("%s",uart_poll_buff);            
        
	}
}







